本気でADS-B受信環境構築 ラボ Vol.2 #ADSB

この記事を読む およそ時間 2

前回、ラボを記事としてあげましたが、それからまた少し実験をしています。
そちらを読まれてない方は、ぜひ、そちらから読んでみてください。

わかったこと

下記のSDR ADS-Bドングルですが、こちらは内蔵しているフィルターとブースターは、かなり強力ですが
近く(40cm)くらいの近さで20wの出力で送信している無線機があります。
常時ではないけど、1日おそらく10時間くらいは送信してるんじゃないかと思いますが
その無線機が送信状態の時、見事に受信画面から飛行機がさーと消えて行ってしまいます。

ということは、そこそこブースターで持ち上げている信号の中、
フィルターが430MHz帯域の抑圧を除去出来ていないという事に気がつきました。

本番環境については、下記のような構成で、こちらに使っているフィルタ/ブースターでは
430MHz帯で送信しても、抑圧をフィルタで除去してくれて、全く飛行機が見えなくなることはありませんでした。
よって、フィルタの性能については、本番機で導入した機種の方に軍配が上がります。
また、ラボ1で、ブースターもイマイチと書きましたが、スプリットケーブルを用いて
1本の電波を2つに分けていた為、そこでかなり減衰が発生して、フルスペックを発揮出来ていなかった様で
そこを取り外して直接接続することで、ブースターの実力も見えた感じになりました。

下記がその後の受信エリアとなります。
北は福島県いわき市付近まで、南は静岡県静岡市、房総沖40km程度
西は千葉県鹿島市沖50km程度まで、現在の仮のディスコーンアンテナで拾えるようになりました。
本命のアンテナは、利得が公表値でアンテナ利得14dBiとなっており、ディスコーンアンテナが1200MHz帯で
アンテナ利得2.15dBiの為、公表値であった場合、+100km~200km程度見えるエリアが広がる可能性がある。

仮に(筆者的には絶対そうだと思ってる)公表値以下として、9dBi程度としても
100km位は見える範囲が広がれば良いなと言った感じ。
範囲としては、山形・新潟・長野・静岡・愛知位まで拾えれば優秀ですね。

ただし、スプリッターで本番機とstaging機と比べると

やっぱり、staging機に接続しているSDR ASD-Bドングルの方が高い解像度を持っているように思う。
そして、高い解像度ゆえ、430MHzの抑圧を抑制出来ないでいる気がする。
ドングルを入れ替える事も出来るけど、さてどうしたものか!?

アンテナ利得とは?

アンテナ利得とは、アンテナが受信した電波の強さをどの程度出力できるのかを数値化したもので、
アンテナの性能を表す指標です。単位はデシベル(dB)で、数値が大きいほどアンテナの性能が良いとされています。
dBi表記は、すべての方向に均等に電波が放射される仮想アンテナを基準とした利得表示で、アイソトロピック比と呼ばれています。 両者の間には0dB=2.14dBiという関係があります。 dBiで表示すると数値が2.14大きくなるため、カタログ表示で多用されています。

簡単に言うと、3dBの利得があるアンテナだと、基準アンテナの2倍の強さで受信が出来る性能である。
6dBだと、基準アンテナの4倍の性能が出る。
20dBだと、基準アンテナの100倍の性能のアンテナであるという事。

ただし、カタログ値では、dBi表記なので、14dBiだとdB表記だと6.54dBという事になる。
それでも、基準のアンテナの4倍の性能になるので期待は持てると思っています。

なんとなくラズパイが熱いと受信感度低下?

受信する飛行機の数が減る気がする。
今、PoEHATをラズパイに取り付けて運用実験をしていますが、
このPoEHATには、小型のFANが内蔵されています。
そのFANは、どうも50℃を越えると起動し、48℃位で停止をするという制御が入っているようで
基本的に下記の通り50℃前後を保てるような設定になっているっぽいです。

結論からすると、受信はできてるっぽい気はするので、今日はたまたま到着便・出発便が少なく
且つ、成田から通過していく便も少ないだけのように思うので、ちょっと様子見します。
そもそも、ラズパイが熱くても、受信しているのはSDRドングルな訳で
あまり関係無い気はしますよね。80℃越えると処理リミッターが入る様ですが
そこまで熱くはないので、いったん様子見で本番運用する際は24時間強制FANを稼働させるので
外気温によって変わると思いますが、そこそこの温度帯で稼働できるのではないかと思ってます。

受信状況をグラフにするツール

Performance Graphsというオープンソースを入れました。
ADS-Bの受信についての詳細がとれるようになりました。

続いて、スペックについての詳細も取れるようになりました。
ただ、これは、Zabbixで採取しているので、あまりこちらではざっと確認する程度に使っています。
alert機能はないので、あくまでも過去そうでしたというグラフになりますが
かなり参考に出来るので、今後の研究に使えるかなと思いました。

導入方法 ラズパイ標準OSにて

いつものようにSSHでログインします。

インストール

sudo bash -c "$(curl -L -o - https://github.com/wiedehopf/graphs1090/raw/master/install.sh)"

これで、上手く行けば下記で見れるはずです。
※ただし、最初のグラフを書き出すまで10分程度時間が必要との記載があるので
 最初アクセスしても、枠だけでグラフは表示されていないかも知れません。
 10分程度まって、グラフが表示されてきたことを確認して頂ければと思います。

http://ラズパイ/graphs1090/

このツール、SDカードへの書込ストレスを緩和する為、1日1回ざっと書き込んでいるようですので
途中でシャットダウンやリブートをすると、空白時間が出来る様なので、厳密に空白時間を作りたく無い場合等は
リブート・シャットダウンする前に、強制的にセーブするコマンドを実行し、SDカードにデータセーブが必要になるようです。

SD カードへの書き込みを減らす (デフォルトで有効)

SD カードへの書き込みを減らすため、データは 24 時間ごとに SD カードに書き込まれます。データ損失に関する注意: 電源を取り外したり失ったりすると、前日の 23:42 以降に生成されたグラフ データが失われます。この問題を回避するには、sudo shutdown nowPi を抜く前に対処してください。詳細については、書き込みの削減に関するセクションを参照してください。再起動やシャットダウンは問題ではなく、データ損失の原因にはなりません。

データがディスクに書き込まれる頻度を変更する場合は、/etc/cron.d/collectd_to_diskコンテンツを編集して、次のいずれかのオプションに置き換えます。(graphs1090 インストール スクリプトを更新/実行すると、これがデフォルトに上書きされます)


# every day at 23:42
42 23 * * * root /bin/systemctl restart collectd

# every Sunday
42 23 * * 0 root /bin/systemctl restart collectd

# every 6 hours
42 */6 * * * root /bin/systemctl restart collectd

この動作を無効にするには、次のコマンドを使用します。

sudo bash /usr/share/graphs1090/git/stopMalarky.sh

動作を再度有効にするには、次のコマンドを使用します。

sudo bash /usr/share/graphs1090/git/malarky.sh

上記の動作の仕組みについての説明: systemd サービスの構成が変更され、グラフ データが /run (メモリ) で管理され、毎晩のみディスクに書き込まれるようになります。再起動/シャットダウン時にディスクに書き込まれ、システムが再起動するとデータが再び /run にロードされます。電源が失われると、最大 24 時間分のデータが失われます。

これはうまく機能しており、多くの人が SD カードの消耗を懸念しているため、これをデフォルトにしました。
rrd データベースは毎分書き込まれ、1 時間あたり約 100 メガバイトが書き込まれます。最近の SD カードのほとんどは、これを 10 年以上簡単に処理できるはずですが、必要に応じて書き込み量を減らすことができます。デフォルトでは、Linux はキャッシュに最大 30 秒保存した後、データをディスクに書き込みます。これを 10 分に増やすと、実際のディスク書き込みは 1 時間あたり約 10 メガバイトに減ります。

最後の 10 分間を失いたくないデータを Raspberry Pi で処理する場合は、これを変更しないでください。
この書き込み遅延を 10 分に増やすには、次のようにします (再起動後に有効になります)。

sudo tee /etc/sysctl.d/07-dirty.conf <<EOF
vm.dirty_ratio = 40
vm.dirty_background_ratio = 30
vm.dirty_expire_centisecs = 60000
EOF

Raspberry Pi の電源が切れたときにデータが失われても構わないので、これを 1 時間に設定しました。

sudo tee /etc/sysctl.d/07-dirty.conf <<EOF
vm.dirty_ratio = 40
vm.dirty_background_ratio = 30
vm.dirty_expire_centisecs = 360000
EOF

ほぼほぼ運用に必要なツールはそろってきたので、これでいったんバックアップを取って
何かあった時に、そこまでは戻れる環境にしたいと思います。

総括

如何だったでしょうか?
ラボ2回目ですが、仮運用し始めて色々課題も見つかって、それをどのように解決するか?
データ分析するも、必要な情報をどのようにゲットするか等、今後も探求は続きます。
別件ですが、AISの受信もし始めようかと思いつつ、海が近くありません。
SDRドングルを追加して、そっちをAISの受信機として別途160MHz帯のアンテナを取り付けて
見ても楽しいのではないかと思っています。

Related posts

Leave a Comment